﻿using System;
using System.Runtime.Serialization;

#pragma warning disable 0649

namespace BattleNet.D3
{
    /// <summary>
    /// 
    /// </summary>
    [DataContract]
    public abstract class HeroBase : BattleNetObject
    {
        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "name")]
        private string _name;
        /// <summary>
        /// 
        /// </summary>
        public string Name
        {
            get { return this._name; }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "level")]
        private int _level;
        /// <summary>
        /// 
        /// </summary>
        public int Level
        {
            get { return this._level; }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "hardcore")]
        private bool _hardcore;
        /// <summary>
        /// 
        /// </summary>
        public bool Hardcore
        {
            get { return this._hardcore; }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "id")]
        private long _id;
        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "heroId")]
        private long _heroId;
        /// <summary>
        /// 
        /// </summary>
        public long Id
        {
            get
            {
                if (this._id > 0)
                {
                    return this._id;
                }
                else if (this._heroId > 0)
                {
                    return this._heroId;
                }
                else
                {
                    return 0;
                }
            }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "gender")]
        private int _gender;
        /// <summary>
        /// 
        /// </summary>
        public int Gender
        {
            get { return this._gender; }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "paragonLevel")]
        private int _paragonLevel;
        /// <summary>
        /// 
        /// </summary>
        public int ParagonLevel
        {
            get { return this._paragonLevel; }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "class")]
        private string _class;
        /// <summary>
        /// 
        /// </summary>
        public string Class
        {
            get { return this._class; }
        }

        /// <summary>
        /// 
        /// </summary>
        public HeroBase()
        {
        }
    }
}
